package com.jn.erp.web.api.interaction.service.impl;


import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jn.erp.web.api.common.entity.TLabel;
import com.jn.erp.web.api.common.mapper.TLabelMapper;
import com.jn.erp.web.api.course.mapper.TCourseMapper;
import com.jn.erp.web.api.interaction.entity.TEvaluateTemplate;
import com.jn.erp.web.api.interaction.entity.dto.TEvaluateTemplateDto;
import com.jn.erp.web.api.interaction.mapper.TEvaluateTemplateMapper;
import com.jn.erp.web.api.interaction.service.TEvaluateTemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author wyp
 * @since 2024-09-20
 */
@Service
public class TEvaluateTemplateServiceImpl extends ServiceImpl<TEvaluateTemplateMapper, TEvaluateTemplate> implements TEvaluateTemplateService {
    @Autowired
    private TEvaluateTemplateMapper tEvaluateTemplateMapper;

    @Autowired
    private TLabelMapper tLabelMapper;

    @Autowired
    private TCourseMapper tCourseMapper;

    @Override
    public List<TEvaluateTemplateDto> templateList(TEvaluateTemplate tEvaluateTemplate) {
        List<TEvaluateTemplateDto> tEvaluateTemplates = tEvaluateTemplateMapper.templateList(tEvaluateTemplate);
        return tEvaluateTemplates;
    }

    @Override
    public List<TEvaluateTemplate> courseTemplateList(TEvaluateTemplate tEvaluateTemplate) {
        List<TEvaluateTemplate> courseList = tEvaluateTemplateMapper.courseTemplateList(tEvaluateTemplate);
        for (TEvaluateTemplate evaluateTemplate : courseList) {
            if (StrUtil.isNotEmpty(evaluateTemplate.getCourseId()) && evaluateTemplate.getIsDelete().equals("0")) {
                evaluateTemplate.setCode("1");
                } else {
                evaluateTemplate.setCode("0");
                }
        }
        return courseList;

    }

    @Transactional
    @Override
    public Boolean updateTemplate(TEvaluateTemplateDto tEvaluateTemplateDto) {
        TEvaluateTemplate tEvaluateTemplate = new TEvaluateTemplate();
        //机构id
        tEvaluateTemplate.setId(tEvaluateTemplateDto.getId());
        tEvaluateTemplate.setUpdateDate(LocalDateTime.now());
        //当前登录人id
        tEvaluateTemplate.setUpdateUser(tEvaluateTemplateDto.getUpdateUser());
        //机构id
        tEvaluateTemplate.setOrgId(tEvaluateTemplateDto.getOrgId());
        // 会传模板id
        tEvaluateTemplate.setIsDelete("0");
        tEvaluateTemplate.setName(tEvaluateTemplateDto.getName());
        tEvaluateTemplate.setCourseId(tEvaluateTemplateDto.getCourseId());
        tEvaluateTemplateMapper.updateById(tEvaluateTemplate);
        List<TLabel> tName = tEvaluateTemplateDto.gettName();
        for (TLabel label : tName) {
           if (label.getId() == null){
               // 如果修改时又添加了一条
               TLabel tLabel = new TLabel();
               tLabel.setName(label.getName());
               tLabel.setOrgId(tEvaluateTemplateDto.getOrgId());
               tLabel.setLableType("score_dimension");
               tLabel.setOrderNum(Integer.valueOf(label.getOrderNum()));
               tLabel.setIsDelete("0");
               tLabel.setId(null);
               tLabel.setTemId(Integer.valueOf(tEvaluateTemplate.getId().toString()));
               tLabelMapper.insert(tLabel);
           } else {
               label.setName(label.getName());
               label.setOrgId(tEvaluateTemplateDto.getOrgId());
               label.setLableType("score_dimension");
               label.setOrderNum(Integer.valueOf(label.getOrderNum()));
               label.setIsDelete("0");
               label.setId(label.getId());
               label.setTemId(Integer.valueOf(tEvaluateTemplate.getId().toString()));
               tLabelMapper.updateById(label);
           }
        }
        // 显示删除的维度
        List<TLabel> delName = tEvaluateTemplateDto.getDelName();
        for (TLabel tLabel : delName) {
            tLabel.setIsDelete("1");
            tLabelMapper.updateById(tLabel);
        }
        return true;
    }


    @Transactional
    @Override
    public Boolean saveTemplate(TEvaluateTemplateDto tEvaluateTemplateDto) {

        TEvaluateTemplate tEvaluateTemplate = new TEvaluateTemplate();
        tEvaluateTemplate.setCreateDate(LocalDateTime.now());
        //机构id
        tEvaluateTemplate.setOrgId(tEvaluateTemplateDto.getOrgId());
        //当前登录人id
        tEvaluateTemplate.setCreateUser(tEvaluateTemplateDto.getCreateUser());
        tEvaluateTemplate.setIsDelete("0");
        tEvaluateTemplate.setName(tEvaluateTemplateDto.getName());
        if (tEvaluateTemplateDto.getCourseId() != null){
        tEvaluateTemplate.setCourseId(tEvaluateTemplateDto.getCourseId());
        }else {
            tEvaluateTemplate.setCourseId(null);
        }
        // 设置默认模版
//        if (StrUtil.isNotEmpty(tEvaluateTemplateDto.getCId())) {
//            tEvaluateTemplate.setType(1);
//        } else {
//            tEvaluateTemplate.setType(0);
//        }
        tEvaluateTemplateMapper.insert(tEvaluateTemplate);

        List<TLabel> tName = tEvaluateTemplateDto.gettName();
        for (TLabel label : tName) {
            TLabel tLabel = new TLabel();
            tLabel.setName(label.getName());
            tLabel.setLableType("score_dimension");
            tLabel.setOrgId(tEvaluateTemplateDto.getOrgId());
            tLabel.setCreateDate(LocalDateTime.now());
            tLabel.setCreateUser(tEvaluateTemplateDto.getCreateUser());
            tLabel.setIsDelete("0");
            tLabel.setId(tEvaluateTemplateDto.getId());
            tLabel.setOrderNum(Integer.valueOf(label.getOrderNum()));
            tLabel.setTemId(Integer.valueOf(tEvaluateTemplate.getId().toString()));
            tLabelMapper.insert(tLabel);
        }
        return true;
    }
}
